// RAP [rh] DnD not implemented
///*******************************************************************************
// * Copyright (c) 2005, 2006 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// *     IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.internal.dnd;
//
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.graphics.Color;
//import org.eclipse.swt.graphics.RGB;
//import org.eclipse.swt.graphics.Rectangle;
//import org.eclipse.swt.widgets.Canvas;
//import org.eclipse.swt.widgets.Composite;
//import org.eclipse.ui.themes.ColorUtil;
//
///**
// * This class provides 'insertion' feedback to the User. It can be used to draw a
// * 'bracket' based on the trim area's rectangle.
// *
// * @since 3.2
// */
//public class InsertCaret {
//	// Constants
//	private static final int width = 6; // the handle's 'thickness'
//	private static final int pctInset = 10; // The percentage of the area left at each 'end'
//
//	// Control info
//	private Canvas caretControl;
//	private Canvas end1;
//	private Canvas end2;
//	
//	// Colors
//	private Color baseColor;
//	private Color hilightColor;
//	private boolean isHighlight;
//	
//	/**
//	 * Creates an affordance to indicate that the given trim area is a valid location for the
//	 * trim being dragged.
//	 * 
//	 * @param windowComposite The window to create the affordance as a child of
//	 * @param trimRect The rectangle to show the affordance for
//	 * @param swtSide The 'side' that the rectangle is on
//	 * @param threshold The amount to offfset the affordance by
//	 */
//	public InsertCaret(Composite parent, Rectangle trimRect, int swtSide, int threshold) {
//		// Use the SWT 'title' colors since they should always have a proper contrast
//		// and are 'related' (i.e. should look good together)
//		baseColor = parent.getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION);
//		RGB background  = parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND).getRGB();
//		RGB blended = ColorUtil.blend(baseColor.getRGB(), background);
//		hilightColor = new Color(parent.getDisplay(), blended);
//
//		//Create the caret control
//		createControl(parent, trimRect, swtSide, threshold);
//	}
//
//	/**
//	 * Creates a control to show the 'area valid' affordance. The current implementation creates a
//	 * simple rect half the length of the rect, centered and offset by the 'threshold' value.
//	 * 
//	 * @param parent The control to used as the parent of the affordance control
//	 * @param trimRect The trim rectangle
//	 * @param swtSide The SWT side that the trim is on
//	 * @param threshold The offset value
//	 */
//	private void createControl(Composite parent, Rectangle trimRect, int swtSide, int threshold) {
//		int hDelta = trimRect.width/pctInset;
//		int vDelta = trimRect.height/pctInset;
//		caretControl = new Canvas (parent.getShell(), SWT.BORDER);
//		
//		end1 = new Canvas (parent.getShell(), SWT.BORDER);
//		end1.setSize(width, width);
//		end2 = new Canvas (parent.getShell(), SWT.BORDER);
//		end2.setSize(width, width);
//		
//		Rectangle bb;
//		switch (swtSide) {
//		case SWT.TOP:
//			caretControl.setSize(trimRect.width-(2*hDelta), width);
//			caretControl.setLocation(trimRect.x + hDelta, trimRect.y + trimRect.height + threshold);
//			bb = caretControl.getBounds();
//			end1.setLocation(bb.x, bb.y-width);
//			end2.setLocation((bb.x+bb.width)-width, bb.y-width);
//			break;
//		case SWT.BOTTOM:
//			caretControl.setSize(trimRect.width-(2*hDelta), width);
//			caretControl.setLocation(trimRect.x + hDelta, trimRect.y - threshold); 
//			bb = caretControl.getBounds();
//			end1.setLocation(bb.x, bb.y+width);
//			end2.setLocation((bb.x+bb.width)-width, bb.y+width);
//			break;
//		case SWT.LEFT:
//			caretControl.setSize(width, trimRect.height -(2*vDelta));
//			caretControl.setLocation(trimRect.x + trimRect.width + threshold,
//									trimRect.y + vDelta); 
//			bb = caretControl.getBounds();
//			end1.setLocation(bb.x-bb.width, bb.y);
//			end2.setLocation(bb.x-bb.width, (bb.y+bb.height)-width);
//			break;
//		case SWT.RIGHT:
//			caretControl.setSize(width, trimRect.height -(2*vDelta));
//			caretControl.setLocation(trimRect.x - threshold,
//									trimRect.y + vDelta); 
//			bb = caretControl.getBounds();
//			end1.setLocation(bb.x+bb.width, bb.y);
//			end2.setLocation(bb.x+bb.width, (bb.y+bb.height)-width);
//			break;
//		}
//		
//		// Initially create as not hilighted
//		setHighlight(false);
//		caretControl.moveAbove(null);
//		end1.moveAbove(null);
//		end2.moveAbove(null);
//	}
//
//	/**
//	 * Sets the hilight 'mode' for the control.
//	 * @param highlight true if the caret should be drawn as 'hilighted'
//	 */
//	public void setHighlight(boolean highlight) {
//		isHighlight = highlight;
//
//		// if we're displaying as a 'bar' then set the control's background to the
//		// appropriate value
//		if (isHighlight) {
//			caretControl.setBackground(hilightColor);
//			end1.setBackground(hilightColor);
//			end2.setBackground(hilightColor);
//		}
//		else {
//			caretControl.setBackground(baseColor);
//			end1.setBackground(baseColor);
//			end2.setBackground(baseColor);
//		}
//	}
//
//	public void dispose() {
//		// Dispose the control's resources (we don't have to dispose the
//		// 'bacseColor' because it's a system color
//		hilightColor.dispose();
//		
//		caretControl.dispose();
//		end1.dispose();
//		end2.dispose();
//	}
//}
